#include "bsp_gpio.h"

GPIO_InitTypeDef GPIO_InitStructure;
void bsp_gpio_init(){
	  RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE); // 使能PC端口时钟
	  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;	//选择对应的引脚
	  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	  GPIO_Init(GPIOC, &GPIO_InitStructure);  //初始化PC端口
	  GPIO_SetBits(GPIOC, GPIO_Pin_13 );	 // 关闭所有LED
}

void bsp_gpio_mode(uint8_t pin, uint8_t mode){
	switch(pin){
		case 0:
			if(mode!=0){
				GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;	//选择对应的引脚
				GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
				GPIO_SetBits(GPIOC, GPIO_Pin_13 );	 // 关闭所有LED
			}
			else{
				GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;	//选择对应的引脚
				GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
				GPIO_SetBits(GPIOC, GPIO_Pin_13 );	 // 关闭所有LED
			}
			break;
		case 1:
			break;
		case 2:
			break;
		case 3:
			break;
		case 4:
			break;
		case 5:
			break;
		case 6:
			break;
		case 7:
			break;
		default :
			break;
	}
}
uint8_t bsp_gpio_read(uint8_t pin){
	switch(pin){
		case 0:
			bsp_gpio_mode(0,0);
			return GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13);
			break;
		case 1:
			break;
		case 2:
			break;
		case 3:
			break;
		case 4:
			break;
		case 5:
			break;
		case 6:
			break;
		case 7:
			break;
		default :
			break;
	}
}

void bsp_gpio_write(uint8_t pin,uint8_t value){
	switch(pin){
		case 0:
			bsp_gpio_mode(0,1);
			if(value!=0){
				GPIO_SetBits(GPIOC,GPIO_Pin_13);
			}
			else{
				GPIO_ResetBits(GPIOC,GPIO_Pin_13);
			}
			break;
		case 1:
			break;
		case 2:
			break;
		case 3:
			break;
		case 4:
			break;
		case 5:
			break;
		case 6:
			break;
		case 7:
			break;
		default :
			break;
	}
}

void bsp_gpio_toggle(uint8_t pin){
	bsp_gpio_write(pin,!bsp_gpio_read(pin));
}

